/* 
1.文本文件（words.txt）的内容为英文单词（单词都由小写字母构成，用空白符号分隔，空格、跳格（'\t'）、换行等都是空白符号），
（1）必做：编写程序对这些单词按照字典序排列；
（2）选做：统计不同单词的数目（即共有多少个互不相同的单词），以及每个单词出现的次数。
*/

#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;

void get_word(vector<string> &a,string file_name){
    ifstream file;
    string tmp;

    file.open(file_name,ios::in);
    while (file>>tmp)
    {
        a.push_back(tmp);
    }
}

int main(int argc, char const *argv[])
{

    vector<string> wordlist;
    get_word(wordlist,"words.txt");
    sort(wordlist.begin(),wordlist.end());

    //统计单词总数
    string pre_word;
    int sum=0;
    for (vector<string>::iterator iter = wordlist.begin(); iter != wordlist.end(); iter++)
    {
        if (*iter!=pre_word)sum++;
        pre_word=*iter;
        cout<<*iter<<"\t";
    }
    cout<<endl<<"WORDS NUMBER: "<<sum<<endl;

    //统计各单词出现次数
    int time[sum]={};
    pre_word=*wordlist.begin();
    int i=0;

    for (vector<string>::iterator iter = wordlist.begin(); iter != wordlist.end(); iter++)
    {
        
        if (*iter!=pre_word){
            cout<<pre_word<<":\t"<<time[i]<<endl;
            pre_word=*iter;
            i++;
            time[i]++;
        }
        else time[i]++;
    }
    vector<string>::iterator iter = wordlist.end();
    iter--;
    cout<<*iter<<":\t"<<time[sum-1]<<endl;
    
    return 0;
}
